*********************************************************
*														*
*	Kodierung der GLES Missing Values in Stata			*
*														*
*********************************************************
/*
	Seit 2013 sind die Missing Values in allen Studien der GLES
	nach einem einheitlichen Schema codiert, das auf den Seiten
	der GLES (https://gles.eu/daten/) heruntergeladen werden kann.
	
	Das vorliegende Do-File rekodiert die GLES Missing Values -99 bis -71 in das Stata
	Format (.a, .b, ...) bei numerischen Variablen. String-Variablen werden auf 
	Systemmissing gesetzt.
	
	Bei Fragen oder Problemen wenden Sie sich gerne an gles@gesis.org 
   
	GESIS, Januar 2022
*/
 
*********************************************************
	
	set more off 
 
*** Verzeichnis festlegen
	*cd "xxx"

*** Datensatz laden
	*use "ZA7702_vX-X-X.dta"

*********************************************************

*** GLES Missing Values in Stata Missing Values (.a - .q) rekodieren

	foreach var of varlist _all {
		capture confirm numeric var `var'
		if !_rc {
		    /* Fuer numerische Variablen ausführen. */
			qui mvdecode `var', mv(-71=.q \-72=.p \-73=.r \-81=.o ///
							\-82=.n \-83=.m \-84=.l \-85=.k ///
							\-86=.j \-91=.i \-92=.h \-93=.g ///
							\-94=.f \-95=.e \-96=.d \-97=.c ///
							\-98=.b \-99=.a)
			local lab: value label `var'
			if "`lab'"!="" {
				label define `lab' ///
				.a "keine Angabe" ///
				.b "weiss nicht" ///
				.c "trifft nicht zu" ///
				.d "Split" ///
				.e "nicht teilgenommen" ///
				.f "nicht in Auswahlgesamtheit" ///
				.g "Interview abgebrochen" ///
				.h "Fehler in Daten" ///
				.i "Modus" ///
				.j "nicht wahlberechtigt" ///
				.k "nicht waehlen" ///
				.l "keine Erst-/Zweitstimme abgeben" ///
				.m "ungueltig waehlen" ///
				.n "keine andere Partei waehlen" ///
				.o "noch nicht entschieden" ///
				.p "nicht einzuschaetzen" ///
				.q "nicht bekannt" ///
				.r "Mehrfachnennungen", modify
				}
			}
		else {
   		    /* Fuer String-Variablen ausführen. Die folgenden zwei koennen 
			bei Bedarf (z.B. Erhalt und/oder anderweitige Rekodierung der 
			Missing Values) geloescht werden. */
		    display as result "Die Variable " as error "`var'" as result " ist eine Stringvariable." _n "Wenn eines der Missing Values vorliegt, wird dieses pauschal als Systemmissing definiert." _n "Wenn Nutzende mit der detaillierten Missingkodierung arbeiten wollen, sollten Sie die Syntax entsprechend anpassen." _n _n
			qui replace `var' = "" if regexm(`var',"-71|-72|-73|-81|-82|-83|-84|-85|-86|-91|-92|-93|-94|-95|-96|-97|-98|-99")
		}
	}
